The present invention relates to updating accelerator firmware images, and more specifically to performing firmware updates on an accelerator without rebooting the operating system of a computer on which the accelerator is installed.
In some computer systems, accelerators may be installed to accelerate various specialized operations, such as graphics processing, encryption and decryption, compression and decompression, massively parallel processing (e.g., big data processing, fluid dynamic simulations, and so on), and other computationally expensive tasks. Accelerator systems may be designed as an add-on board that interfaces with a processor via a physical bus (e.g., PCI Express). As processes run on these accelerator systems, the accelerator interfaces with system memory using direct memory access in which the accelerator accesses regions of memory using real, rather than virtual, addresses. By accessing memory using direct memory access, an accelerator can bypass the memory management systems built into CPUs installed in a system.
In some cases, an accelerator may be designed to interface with system memory using a virtual memory space established by a CPU. A process can attach to the accelerator and create a context, which includes information about the virtual memory space allocated to the process, as well as other information. While the process executes on the accelerator, the accelerator can read from and write to system memory using virtual addresses associated with the virtual memory space in lieu of direct memory access using physical memory addresses.
Generally, an accelerator is shipped with a firmware image that defines accelerator functionality. Over time, an accelerator manufacturer may make new firmware images available for an accelerator in order to improve existing accelerator functionality or add functionality to an accelerator. To update an accelerator, an image is downloaded, and the system may be taken offline and rebooted. Once the system is rebooted, the accelerator activates the firmware update, and subsequent operations on the system may take advantage of the updated functionality made available through the firmware update.